<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /**
        * @description:
        * 数组转树(递归)
            * 第一步: 找到pid为''的元素,添加进新数组tree
            * 第二步:在arr中查找pid与tree数组中元素的id相同的元素,添加进tree相应元素的children
        * @param arr{ Array }, pid{ String }
        * @return: Array
        */
        // function arrayToTree(arr, pid) {
        //     // 1. 找到pid为''的元素,添加进新数组tree
        //     debugger
        //     const tree = arr.filter(item => item.pid === pid)
        //     debugger
        //     console.log(tree);
        //     // 2. 在arr中查找pid与tree数组中元素的id相同的元素,添加进tree相应元素的children            
        //     tree.forEach(item => {
        //         item.children = arrayToTree(arr, item.id)
        //     })
        //     return tree
        // }

        /**
        * @description:
        * 数组转树(普通函数)
            * 第一步: 找到pid为''的元素,添加进新数组tree
            * 第二步:在arr中查找pid与tree数组中元素的id相同的元素,添加进tree相应元素的children
        * @param arr{ Array }, pid{ String }
        * @return: Array
        */
        function arrayToTree(arr) {
            arr.forEach(item => {
                item.children = arr.filter(ele => ele.pid === item.id)
            })
            console.log(arr);
            return arr.filter(item => item.pid === '')
        }

        const arr = [
            {
                "id": "604e115c7bfcfa45d019d3e9",
                "pid": "-1",
                "name": "传智教育",
                "code": "1",
                "introduce": "程序员的摇篮",
                "createTime": "2022-10-12 14:16:48"
            },
            {
                "id": "604e21feb205b95968e13129",
                "pid": "",
                "name": "总裁办",
                "code": "1001",
                "manager": "管理员",
                "introduce": "公司战略部",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "604e21feb205b95968e131ui",
                "pid": "604e21feb205b95968e13129",
                "name": "总裁办-1",
                "code": "1401",
                "manager": "管理员",
                "introduce": "公司战略部-1",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "604e21feb205b95968e131ui1",
                "pid": "604e21feb205b95968e131ui",
                "name": "总裁办-1-1",
                "code": "1501",
                "manager": "管理员",
                "introduce": "公司战略部-1-1",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "604e222bb205b95968e1312a",
                "pid": "",
                "name": "行政部",
                "code": "XZB",
                "manager": "管理员",
                "introduce": "行政部",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "604e223fb205b95968e1312b",
                "pid": "",
                "name": "人事部",
                "code": "RSB",
                "manager": "管理员",
                "introduce": "人事部",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "604e2251b205b95968e1312c",
                "pid": "",
                "name": "财务部",
                "code": "CWB",
                "manager": "管理员",
                "introduce": "财务部",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "604e2262b205b95968e1312d",
                "pid": "604e2251b205b95968e1312c",
                "name": "财务核算部",
                "code": "CWHSB",
                "manager": "管理员",
                "introduce": "财务核算部",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "604e227db205b95968e1312e",
                "pid": "604e2251b205b95968e1312c",
                "name": "税务管理部",
                "code": "SWGLN",
                "manager": "管理员",
                "introduce": "税务管理部",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "604e2297b205b95968e1312f",
                "pid": "604e2251b205b95968e1312c",
                "name": "薪资管理部",
                "code": "XZGLB",
                "manager": "管理员",
                "introduce": "薪资管理部",
                "createTime": "2021-03-14 22:47:25"
            },
            {
                "id": "6051ad90e93db6522c1d00d2",
                "pid": "",
                "name": "技术部",
                "code": "JSB",
                "manager": "孙财",
                "introduce": "技术部",
                "createTime": "2021-03-17 15:18:23"
            },
            {
                "id": "6051adb6e93db6522c1d00d3",
                "pid": "6051ad90e93db6522c1d00d2",
                "name": "Java研发部",
                "code": "JYFB",
                "manager": "管理员",
                "introduce": "JAVA研发部",
                "createTime": "2021-03-17 15:18:23"
            },
            {
                "id": "6051add6e93db6522c1d00d4",
                "pid": "6051ad90e93db6522c1d00d2",
                "name": "Python研发部",
                "code": "PYFB",
                "manager": "罗晓晓",
                "introduce": "Python研发部",
                "createTime": "2021-03-17 15:18:23"
            },
            {
                "id": "6051adefe93db6522c1d00d5",
                "pid": "6051ad90e93db6522c1d00d2",
                "name": "Php研发部",
                "code": "PhpYFB",
                "manager": "孙财",
                "introduce": "Php研发部",
                "createTime": "2021-03-17 15:18:23"
            },
            {
                "id": "6051ae03e93db6522c1d00d6",
                "pid": "",
                "name": "运营部",
                "code": "YYB",
                "manager": "孙财",
                "introduce": "运营部",
                "createTime": "2021-03-17 15:18:23"
            },
            {
                "id": "6051ae15e93db6522c1d00d7",
                "pid": "",
                "name": "市场部",
                "code": "SCB",
                "manager": "孙财",
                "introduce": "市场部",
                "createTime": "2021-03-17 15:18:23"
            },
            {
                "id": "6051ae28e93db6522c1d00d8",
                "pid": "6051ae15e93db6522c1d00d7",
                "name": "北京事业部",
                "code": "BJSYB",
                "manager": "孙财",
                "introduce": "BJSYB",
                "createTime": "2021-03-17 15:18:23"
            },
            {
                "id": "6051ae3de93db6522c1d00d9",
                "pid": "6051ae15e93db6522c1d00d7",
                "name": "上海事业部",
                "code": "SHSYB",
                "manager": "文吉星",
                "introduce": "上海事业部",
                "createTime": "2021-03-17 15:18:23"
            }
        ]

        console.log(arrayToTree(arr)); 
    </script>
</body>

</html>